import $axios, { Result } from '@/plugins/axios'
import { AxiosResponse } from 'axios'
import { PageParam } from '@/type'

/**
 * TDelayApply
 */
export interface IDelayAddOrUpdateRequest {
  /**
   * 申请状态：0/待审批1/通过/2不通过3/待提交
   */
  applyStatus?: number
  /**
   * 申请时间(object)
   */
  applyTime?: string
  /**
   * 申请单位
   */
  applyUnitId?: number
  /**
   * 申请人（牵头单位人员）
   */
  applyUserId?: number
  /**
   * 审批人（督查办/牵头单位领导）
   */
  approveUserId?: number
  /**
   * 创建时间(object)
   */
  createTime?: string
  /**
   * 创建人ID
   */
  createUserId?: number
  /**
   * 关联事项期限ID
   */
  deadlineId?: number
  /**
   * 延期天数
   */
  delayDay?: number
  /**
   * 延期原因
   */
  delayReason?: string
  /**
   * 延期方式(1-本周期延期)
   */
  delayType?: number
  /**
   * 延期记录ID
   */
  id?: number
  /**
   * 关联事项ID
   */
  matterId?: number
  /**
   * 新截止时间(object)
   */
  newDeadline?: string
  /**
   * 原截止时间(object)
   */
  oldDeadline?: string
  /**
   * 删除标志(0-未删除 1-已删除)
   */
  state?: number
  /**
   * 更新时间(object)
   */
  updateTime?: string
  /**
   * 更新人ID
   */
  updateUserId?: number
  [property: string]: any
}

/**
 * 申请列表
 * @param param 分页查询参数
 * @returns
 */
export async function getDelayApplicationList(
  param: PageParam,
): Promise<AxiosResponse<Result>> {
  return await $axios.post('/supervision-api/delayApply/getDelayApply', {
    ...param,
  })
}

/**
 * 审核列表
 * @param param 分页查询参数
 * @returns
 */
export async function getDelayApplicationApproveList(
  param: PageParam,
): Promise<AxiosResponse<Result>> {
  return await $axios.post(
    '/supervision-api/delayApply/getPendingAuditCoordinationApply',
    {
      ...param,
    },
  )
}

/**
 * 根据id查询详情
 * @param id
 */
export async function getDelayApplicationDetailById(
  id: number,
): Promise<AxiosResponse<Result>> {
  return await $axios.get('/supervision-api/delayApply/getDelayApplyById', {
    params: {
      id,
    },
  })
}

/**
 * 保存或更新
 * @param
 * @returns
 */
export async function saveOrUpdateDelayApplication(
  param: IDelayAddOrUpdateRequest,
): Promise<AxiosResponse<Result>> {
  return await $axios.post(
    '/supervision-api/delayApply/saveOrUpdateApplyInfo',
    {
      ...param,
    },
  )
}

/**
 * 提交
 * @param
 * @returns
 */
export async function submitDelayApplication(
  param: IDelayAddOrUpdateRequest,
): Promise<AxiosResponse<Result>> {
  return await $axios.post('/supervision-api/delayApply/submitApplyInfo', {
    ...param,
  })
}

/**
 * 删除
 * @param id
 * @returns
 */
export async function deleteDelayApplication(
  id: number,
): Promise<AxiosResponse<Result>> {
  return await $axios.delete(
    `/supervision-api/delayApply/deleteApplyData/${id}`,
  )
}

/**
 * 列表提交
 * @param
 * @returns
 */
export async function submitDelayApplicationById(
  param: IDelayAddOrUpdateRequest,
): Promise<AxiosResponse<Result>> {
  return await $axios.post('/supervision-api/delayApply/submitApplyInfoById', {
    ...param,
  })
}
